package com.lzj.server.exceptions;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 通用业务异常（自定义运行时异常）
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class BaseException extends RuntimeException {

    /**
     * 异常编码，可用于前端识别不同业务错误类型（非必须，但推荐）
     */
    private final Integer code;

    /**
     * 构造方法：只传 message，使用默认 code
     */
    public BaseException(String message) {
        super(message);
        this.code = 500; // 可配置为统一默认业务错误码
    }

    /**
     * 构造方法：传 code + message
     */
    public BaseException(Integer code, String message) {
        super(message);
        this.code = code;
    }

    /**
     * 构造方法：传 message 和原始异常
     */
    public BaseException(String message, Throwable cause) {
        super(message, cause);
        this.code = 500;
    }

    /**
     * 构造方法：传 code + message + cause
     */
    public BaseException(Integer code, String message, Throwable cause) {
        super(message, cause);
        this.code = code;
    }
}
